solr 配置unique key id 自动增长

通常情况数据库表与solr对应

  • 但亿信智能知识库 表与solr结构不同 solr需要自动创建unique key id

how? 参考教程 参考教程2

1.配置文件schema.xml

  • 用atom搜索工具(有相关配置就修改 没有就新增)
1
2
3
<fieldType name="uuid" class="solr.UUIDField" indexed="true" />
<field name="id" type="uuid" indexed="true" stored="true" multiValued="false" required="true" />
<field name="_root_" type="uuid" docValues="false" indexed="true" stored="false"/>

2.配置文件solrconfig.xml(有相关配置就修改 没有就新增)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<requestHandler name="/update" class="solr.UpdateRequestHandler">
<lst name="defaults">
<str name="update.chain">dispup</str>
</lst>
</requestHandler>

<updateRequestProcessorChain name="dispup">
<processor class="solr.UUIDUpdateProcessorFactory">
<str name="fieldName">id</str>
</processor>
<processor class="solr.LogUpdateProcessorFactory" />
<processor class="solr.DistributedUpdateProcessorFactory" />
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

遇到问题

1.root字段类型需要与id一致

  • 解决方法:修改root firldType=”uuid”
1
<field name="_root_" type="uuid" docValues="false" indexed="true" stored="false"/>

2.Invalid UUID String: ‘10’

  • Java 提交时报错

3. 报错 Document is missing mandatory uniqueKey field: id

  • 把本地Question对象的id改成String类型(原来是int)

4.Error loading class ‘solr.JsonUpdateRequestHandler

  • 改啦配置文件 忘啦怎么恢复 改之前先生成副本!!!!!!!!

总结之前失败经验 参考教程

    1. n篇教程都是修改两个配置文件 没一个成功的
    1. 大多报错Invalid UUID String: ‘10’
  • 3.而且配置说的不详细 并没有 name=”/update”的ruquestHandle 只有name=”/update、elaxsc等”
  • 4.而且root 的type要和id的一致也没说

1.修改scheme.xml

  • 修改id字段 添加uuid字段类型 改变root字段类型
  • 记住不能有相同字段就行
1
2
3
<field name="id" type="uuid" indexed="true" stored="true" multiValued="false" />
<fieldType name="uuid" class="solr.UUIDField" indexed="true" />
<field name="_root_" type="uuid" docValues="false" indexed="true" stored="false"/>

2.修改solrconfig.xml

  • 修改name含update的requestHander
  • 增加updateRequestProcessorChain name=”uuid”
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<requestHandler name="/update" class="solr.UpdateRequestHandler">

<lst name="defaults">

<str name="update.chain">uuid</str>

</lst>

</requestHandler>
```

```Java
<updateRequestProcessorChain name="uuid">
<processor class="solr.UUIDUpdateProcessorFactory">
<str name="fieldName">id</str>
</processor>
<processor class="solr.RunUpdateProcessorFactory" />
</updateRequestProcessorChain>

3.idea新建maven项目 用slorj插入数据测试

4.报错 Invalid UUID String “0”